TEXDME Version 2.00

Ein ARexx Programmpaket für DME und AmigaTEX \begin{matrix}c \\ ◯ \end{matrix} 1989 Stefan Becker

1 Einleitung

Dieses Paket dient dazu AmigaTEX aus dem PD-Editor DME heraus zu steuern. Die Datei wird im Editor bearbeitet, dann per Knopfdruck an AmigaTEX übergeben und kann schliesslich mit Preview betrachtet werden. Natürlich kann auch der Druckertreiber vom Editor aus aufgerufen werden.

2 Installation

Das Paket enthält folgende Dateien:

readme  Generelle Informationen zu diesem Paket
rexx/*.dme  ARexx Programme
s/.EDRC  Beispieldatei für die Tastaturbelegung
s/TeX.startup Startscript für TEX
TeXDME.tex Dokumentation im LaTEX-Format

Die Dateien aus den Unterverzeichnissen rexx bzw. s werden nach REXX: bzw. S: kopiert. Falls Sie die Tastaturbelegung übernehmen möchten, dann fügen sie die Datei s/.EDRC an die Datei S:.EDRC an. Das Paket benötigt weiterhin die folgenden Programme bzw. Dateien:

arp.library  Filerequester etc.
AShell  ARP Shell (kann durch NewShell ersetzt werden)
rexxarplib.library ARexx Schnittstelle zur arp.library
RunBack  Startet Programme im Hintergrund

3 Beschreibung der ARexx Programme

Es folgt nun eine Beschreibung der Programme und ihrer Funktionsweise. Es wird gezeigt, wie man sie vom DME aus aufruft und welche Parameter sie benötigen.

3.1 StartTeX

Mit diesem Programm wird AmigaTEX gestartet. Es prüft dabei zuerst, ob AmigaTEX schon läuft. Kann AmigaTEX nicht gestartet werden, so gibt das Programm den Wert 10 zurück.

   Aufruf: rx StartTeX

3.2 StartPreview

Mit diesem Programm wird Preview gestartet. Es prüft dabei zuerst, ob Preview schon läuft. Kann Preview nicht gestartet werden, so gibt das Programm den Wert 10 zurück.

   Aufruf: rx StartPreview

3.3 RemoveTeX

Dieses Programm entfernt AmigaTEX, Preview und alle von TEXDME benötigten Umgebungsvariablen.

   Aufruf: rx RemoveTeX
          rx1 RemoveTeX dummy

Bei der zweiten Aufrufvariante werden noch zusätzlich alle temporären Dateien gelöscht, die TEXDME angelegt hat. Diese tragen den Namen RAM:TeXDME*.

3.4 SetTeXFormat1

Da TEX mit verschiedenen Makropaketen arbeiten kann, haben Sie mit diesem Programm die Möglichkeit, das richtige Paket mit auszuwählen. Dazu erscheint ein Requester, in den sie den Namen eintragen können. Falls die Umgebungsvariable texformat definiert ist, wird deren Inhalt angezeigt, ansonsten erscheint lplain. Das Resultat wird in der Umgebungsvariable abgelegt und, falls AmigaTEX schon lief, wird AmigaTEX unterbrochen und neu gestartet.

   Aufruf: rx SetTeXFormat1

3.5 SetTeXFormat2

Die Funktionsweise ist gleich zu SetTexFormat1, es erscheint allerdings ein File-Requester, der das Unterverzeichnis TeX:macros anzeigt.

   Aufruf: rx SetTeXFormat2

3.6 DoTeX

Dies ist das wichtigste Programm für die Arbeit mit AmigaTEX. Als erstes sichert es die Originaldatei. Falls AmigaTEX noch nicht läuft, wird es mit StartTeX gestartet. Dann wird überprüft, ob die Datei die Endung .tex besitzt, sonst wird das Programm abgebrochen. Die Datei wird nun in eine temporäre Datei zwischengespeichert und deren Name an AmigaTEX geschickt. Danach ist das Programm beendet und die Kontrolle geht an den Editor zurück, während AmigaTEX an dem Text arbeitet.

   Aufruf: rx1 DoTeX \$fname

3.7 GoTeXError

Falls AmigaTEX die Arbeit wegen eines Fehlers im Text unterbrochen hat, kann man mit Hilfe dieses Programmes die fehlerhafte Stelle abfragen. Dabei wird der Editor angewiesen, den Cursor auf diese Stelle zu setzen.

   Aufruf: rx GoTeXError

3.8 CopyTeXFiles

Da TEXDME mit temporären Dateien arbeitet, müssen diese vor der Beendigung der Arbeit mit dem Editor gesichert werden. Nach dem Aufruf erscheint ein File-Requester, in dem man das Zielverzeichnis angeben kann. Es werden nun alle zu der aktuellen Datei gehörenden Dateien in das Zielverzeichnis kopiert. Dabei werden keine Dateien mit den Endungen .log und .tex kopiert.

   Aufruf: rx1 CopyTeXFiles \$fname

3.9 PrintTeX

Dieses Programm druckt die zur aktuellen Datei gehörende temporäre .dvi-Datei aus. Es erscheinen drei Requester, in denen man die Startseite, die Anzahl der zu druckenden Seiten und zusätzliche Optionen des Druckertreibers eingibt. Gibt man für die Anzahl der Seiten all ein, so werden alle Seiten, von der Startseite angefangen, ausgedruckt. Die Optionen für den Druckertreiber sind so einzugeben, wie man sie beim Aufruf vom CLI angeben würde. Das Programm öffnet dann ein Fenster mit dem Namen TeXPrint. Will man den Druckvorgang abbrechen, so aktiviert man das Fenster und drückt CTRL-C.

   Aufruf: rx1 PrintTeX \$fname

3.10 TeXSwitch

Die Ausgaben von AmigaTEX gehen in ein eigenes Fenster, das normalerweise hinter dem Editorfenster liegt. Mit diesem Programm kann das Fenster nach vorne geholt und auch wieder nach hinten gelegt werden. Ruft man es mit einem Parameter auf, so wird es nach vorne (front) oder nach hinten (back) geschaltet. Ein Aufruf ohne Parameter bewirkt ein Hin- und Herschalten zwischen den zwei Lagen.

   Aufruf: rx  TeXSwitch
          rx1 TeXSwitch front
          rx1 TeXSwitch back

3.11 PreviewSwitch

Dieses Programm wirkt genauso wie das vorherige, nur wird diesmal das Fenster oder der Bildschirm von Preview kontrolliert.

   Aufruf: rx  PreviewSwitch
          rx1 PreviewSwitch front
          rx1 PreviewSwitch back

4 Beispiel einer Tastaturbelegung

Die Datei s/.EDRC enthält folgende Befehle:

   map c-f1  (rx  StartTeX)
   map c-f2  (rx  StartPreview)
   map c-f3  (rx  SetTexFormat1)
   map c-f4  (rx  TexSwitch)
   map c-f5  (rx1 PreviewSwitch Front)
   map c-f6  (rx1 DoTeX \$fname)
   map c-f7  (rx  GoTeXError)
   map c-f8  (rx1 CopyTeXfiles \$fname)
   map c-f9  (rx1 PrintTeX \$fname)
   map c-f10 (rx1 RemoveTex Dummy)

Die Aufrufe sind auf die Kombination CTRL-Funktionstaste gelegt. Die Auswahl des Makropakets geschieht über einen Requester. Das Fenster von AmigaTEX wird abwechselnd nach vorne oder nach hinten gelegt. Preview kann nur nach vorne geholt werden, was dann sinnvoll ist, wenn man ihn im Modus Custom Screen betreibt. Beim Aufruf von RemoveTeX werden alle temporären Dateien gelöscht.

5 Hinweise zur Programmierung

Ich möchte in diesem Abschnitt auf einige Stolperstellen hinweisen, auf die ich beim Programmieren der ARexx Programme gestoßen bin. Dadurch sollten sich auch einige Unklarheiten bereinigen lassen, die sich beim Durchlesen der Quelltexte ergeben könnten.

Als erste Frage: Warum werden temporäre Dateien benutzt? Hier kommt eine Eigenart der ARexx Implementierung im DME zum Vorschein. Die von DME gestarteten ARexx Programme erhalten als aktuelles Verzeichnis nicht das aktuelle Verzeichnis des Fensters, von dem das Programm aufgerufen wurde, sondern erben das aktuelle Verzeichnis, das beim Starten des Editors eingestellt war.

Dies tritt besonders bei der Verwendung des Befehls ARPLOAD auf, da dieser Befehl automatisch das aktuelle Verzeichnis setzt, so daß bei gleichzeitigem Arbeiten an mehereren Dateien aus verschiedenen Verzeichnissen der Pfad für die zu erzeugenden Dateien nicht ermittelt werden kann. Deshalb muss bei CopyTeXFiles auch das Zielverzeichnis abgefragt werden.

Es scheint ein Fehler in der Funktion GetFile() aus der rexxarplib.library zu sein, der in bestimmten Situationen ein überzähliges ’/’ dem Pfad hinzufügt. Deshalb wird in dem Program CopyTeXFiles eine Korrektur benötigt.

Der Druckertreiber benötigt ein Fenster, aus dem ihm das Abbruchsignal CTRL-C gesendet werden kann. Er reagiert auf kein anderes Signal.

Um ein unnötiges Flackern der Titelzeile des Editors zu verhindern, sollte man den Arexx Befehl CALL zum Prozeduraufruf verwenden. DME reagiert sonst mit der Meldung Unknown Command.

Es ist nur ein gewisses Maß an Fehlerabfragen eingebaut. Es wird immer überprüft, ob das anzusprechende Programm schon läuft. Bei der Übergabe von Dateinamen wird getestet, ob er die Endung .tex besitzt. Bei fehlerfreiem Ablauf ist der Rückgabewert 0, im Fehlerfall 10.

6 Sonstiges

Kommentare und Fehlerberichte bitte an:

Stefan Becker Holsteinstr. 9

5100 Aachen

UseNet: stefanb@cip-s02.informatik.rwth-aachen.de